package controllers;

import java.util.*;

import play.mvc.*;
import play.api.mvc.Session;
import play.data.*;
import static play.data.Form.*;
import play.*;

import views.html.*;

import models.*;
import views.html.connexionUser.*;


public class Application extends Controller {
	  
    public static Result indexAdmin() {
        return ok(indexAdmin.render());
    }
    
    public static Result indexEtudiant() {
        return ok(indexEtudiant.render());
    }
    
    public static Result indexExpert() {
        return ok(indexExpert.render());
    }
    
    public static Result connexion(){
    	return ok(connexion.render(""));  	
    }
    
    public static Result redirectionAccueil(){
    	User us = User.findById(Long.parseLong(session("id")));
		
    	//si le user est un étudiant
		if(us.getStatut().equals(Statut.Etudiant)){
			return indexEtudiant();
		}else {
			//si le user est un expert
			if(us.getStatut().equals(Statut.Expert)){
				return indexExpert();
			//sinon le user est un admin
			}else {
				return indexAdmin();	
			}	
		} 
    }   
     
    public static Result authentification(){  
		DynamicForm dynamicForm = form().bindFromRequest();
		
		//si le user existe pour le login et le mdp saisi
		if(User.authenticate(dynamicForm.get("login"), dynamicForm.get("pwd")) !=null){
		
			User us = User.findById((User.authenticate(dynamicForm.get("login"), dynamicForm.get("pwd"))).getIdUser());
			session("id", us.getIdUser().toString());
			session("connected");
			
			//si le user est un étudiant
			if(us.getStatut().equals(Statut.Etudiant)){
				return indexEtudiant();
			}else {
				//si le user est un expert
				if(us.getStatut().equals(Statut.Expert)){
					System.out.println("\n"+session().toString());
					return indexExpert();
				//sinon le user est un admin
				}else {
					return indexAdmin();	
				}	
			}
			
		}else
			return ok(connexion.render("login ou mot de passe incorrect, Veuillez réessayer"));	
    }
    
    public static Result deconnexion(){
    	return TODO;
    	//ne pas oublier  session().remove("connected"); ou un  session().clear()
    }
}
